home *** CD-ROM | disk | FTP | other *** search
- 10 !RE-SAVE"LABELCHR.BAS"
- 20 INTEGER I
- 30 DIM Erase$[16]
- 40 COM /Setlabel/ INTEGER Erase
- 50 Erase=1
- 60 Erase$=" Erase *ON/OFF "
- 70 !
- 80 CLEAR SCREEN
- 90 GINIT
- 100 GRAPHICS INPUT IS KBD,"KBD"
- 110 LORG 1
- 120 !
- 130 Set_grid(4)
- 140 Disp_chr(72)
- 150 Set_grid(3)
- 160 Disp_chr(103)
- 170 Draw_grid(2)
- 180 Show
- 190 Draw_grid(1)
- 200 OUTPUT KBD;"""LABELCHR Version 18-Dec-89"" E";
- 210 !
- 220 USER 1 KEYS
- 230 ON KEY 3 LABEL " Which Grid?",1 CALL Grid
- 240 ON KEY 2 LABEL "Display Char",1 CALL Disp
- 250 ON KEY 1 LABEL "Digitize Char",1 CALL Digit
- 260 ON KEY 4 LABEL Erase$,1 GOSUB Toggle_erase
- 270 ON KEY 5 LABEL " Show Chars",1 CALL Show
- 280 FOR I=6 TO 7
- 290 ON KEY I LABEL "" GOSUB Dummy
- 300 NEXT I
- 310 ON KEY 8 LABEL " EXIT" GOTO Exit
- 320 Idle: GOTO Idle
- 330 !
- 340 !
- 350 Dummy: RETURN
- 360 !
- 370 !
- 380 Toggle_erase: Erase= NOT Erase
- 390 Erase$[9;1]=CHR$(32+10*Erase)
- 400 Erase$[16;1]=CHR$(42-10*Erase)
- 410 ON KEY 4 LABEL Erase$,1 GOSUB Toggle_erase
- 420 RETURN
- 430 !
- 440 !
- 450 Exit: USER 2 KEYS
- 460 END
- 470 !
- 480 !
- 490 SUB Grid
- 500 INTEGER G
- 510 INPUT "Which grid do you wish to use?",G
- 520 IF G<1 OR G>4 THEN 510
- 530 Set_grid(G)
- 540 SUBEND
- 550 !
- 560 !
- 570 SUB Disp
- 580 INTEGER C
- 590 DIM L$[20]
- 600 !
- 610 INPUT "Which character do you wish to display?",L$
- 620 IF LEN(L$)=1 THEN
- 630 C=NUM(L$)
- 640 ELSE
- 650 C=VAL(L$)
- 660 IF C<0 OR C>255 THEN 610
- 670 END IF
- 680 Disp_chr(C)
- 690 SUBEND
- 700 !
- 710 !
- 720 SUB Draw_grid(INTEGER Grid)
- 730 Set_grid(Grid)
- 740 PEN 6
- 750 GRID 1,1
- 760 SUBEND
- 770 !
- 780 !
- 790 SUB Set_grid(INTEGER Grid)
- 800 INTEGER G
- 810 G=Grid-1 ! zero base
- 820 W1=RATIO*25
- 830 W=W1*.95
- 840 H=2*W
- 850 VIEWPORT G*W1,G*W1+W,99-H,99
- 860 WINDOW 0,7,0,15
- 870 DISP "Grid =";Grid
- 880 SUBEND
- 890 !
- 900 !
- 910 SUB Disp_chr(INTEGER C)
- 920 COM /Setlabel/ INTEGER Erase
- 930 IF Erase THEN
- 940 MOVE 0,0
- 950 AREA PEN 0
- 960 RECTANGLE 8,16,FILL
- 970 PEN 6
- 980 GRID 1,1
- 990 END IF
- 1000 PEN 1
- 1010 MOVE -1,1
- 1020 CSIZE 2*RATIO*25*.95,.643
- 1030 LABEL CHR$(C);
- 1040 SUBEND
- 1050 !
- 1060 !
- 1070 SUB Digit
- 1080 INTEGER B,I,C
- 1090 DIM A$[60]
- 1100 !
- 1110 DISP "Mouse: Left=Draw, Right=Move KBD:arrows, then ENTER, then MOVE/DRAW softkey"
- 1120 FOR I=1 TO 8
- 1130 ON KEY I LABEL "" GOSUB Dummy
- 1140 NEXT I
- 1150 PEN 2
- 1160 TRACK CRT IS ON
- 1170 MOVE 0,0
- 1180 SET LOCATOR 0,0
- 1190 A$=""
- 1200 LOOP
- 1210 DIGITIZE X,Y,S$
- 1220 EXIT IF S$[3;1]<>"2"
- 1230 B=VAL(S$[7,8])
- 1240 X=PROUND(X,0)
- 1250 Y=PROUND(Y,0)
- 1260 SET LOCATOR X,Y ! set position for next DIGITIZE
- 1270 SET ECHO X,Y ! move crosshairs here, now
- 1280 !
- 1290 SELECT B
- 1300 CASE 0
- 1310 ON KEY 5 LABEL " Draw",2 GOTO Draw
- 1320 ON KEY 6 LABEL " Move",2 GOTO Move
- 1330 ON KEY 8 LABEL "Digitize Done",2 GOTO Done
- 1340 GOTO 1340
- 1350 Draw: DRAW X,Y
- 1360 C=SHIFT(X,-4)+Y
- 1370 GOTO 1400
- 1380 Move: MOVE X,Y
- 1390 C=128+SHIFT(X,-4)+Y
- 1400 ON KEY 5 LABEL "" GOSUB Dummy
- 1410 ON KEY 6 LABEL "" GOSUB Dummy
- 1420 ON KEY 8 LABEL "" GOSUB Dummy
- 1430 CASE 1,3
- 1440 GOTO Draw
- 1450 CASE 2
- 1460 GOTO Move
- 1470 END SELECT
- 1480 DISP C;" ";
- 1490 A$=A$&CHR$(C)
- 1500 END LOOP
- 1510 Done: SET ECHO -100,-100
- 1520 INPUT "What char do you wish to assign this definition to? (-1=Don't assign)",C
- 1530 IF C>=0 AND C<256 THEN CONFIGURE LABEL C TO A$
- 1540 SUBEXIT
- 1550 Dummy: BEEP
- 1560 RETURN
- 1570 SUBEND
- 1580 !
- 1590 !
- 1600 SUB Show
- 1610 INTEGER I
- 1620 !
- 1630 PEN 1
- 1640 CSIZE 2*RATIO*25*.95/16,.643
- 1650 CLIP OFF
- 1660 FOR I=128 TO 255
- 1670 MOVE INT((I-128)/16),14-I MOD 16
- 1680 LABEL CHR$(I);
- 1690 NEXT I
- 1700 CLIP ON
- 1710 SUBEND
-